package com.zzgc.common.entity;

import com.fasterxml.jackson.annotation.JsonProperty;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.apache.ibatis.annotations.Insert;
import org.hibernate.validator.constraints.Length;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;
import java.io.Serializable;

/**
 * 用户表(AuthUserParam)实体类
 *
 * @author makejava
 * @since 2022-11-17 15:01:28
 */
@Data
@ApiModel("用户实体类")
public class AuthUser implements Serializable {
    private static final long serialVersionUID = 843762832468455052L;
    /**
     * 主键
     */
    @ApiModelProperty("用户ID")
    private Long id;
    /**
     * 姓名
     */
    // 如果字段是一个小写字母的驼峰命名, 会接收不到前端的数据, 要不加注解, 要不改变字段
    @NotNull(message = "姓名不能为空")
    @JsonProperty("aName")
    @ApiModelProperty("用户姓名")
    private String aName;
    /**
     * 昵称
     */
    @JsonProperty("aNickname")
    @ApiModelProperty("用户昵称")
    private String aNickname;
    /**
     * 会员帐号
     */
    @NotNull(message = "登录账号不能为空")
    @JsonProperty("aAccount")
    @ApiModelProperty("登录账号")
    private String aAccount;
    /**
     * 登录密码
     */
    @JsonProperty("aPassword")
    @ApiModelProperty("登录密码")
    private String aPassword;
    /**
     * 性别 1：男 2：女
     */
    @NotNull(message = "性别不能为空")
    @JsonProperty("aSex")
    @ApiModelProperty("性别")
    private Integer aSex;
    /**
     * 生日
     */
//    @NotNull(message = "出生日期不能为空")
    @JsonProperty("aBirthday")
    @ApiModelProperty("生日")
    private String aBirthday;
    /**
     * 手机号码
     */
    @ApiModelProperty("联系人电话")
    @NotNull(message = "手机号不能为空")
    @Length(min = 11, max = 11, message = "手机号只能为11位")
    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
    @JsonProperty("aMobile")
    private String aMobile;
    /**
     * 电子邮箱
     */
    @JsonProperty("aEmail")
    @ApiModelProperty("电子邮箱")
    private String aEmail;
    /**
     * 电话
     */
    @JsonProperty("aTel")
    private String aTel;
    /**
     * 联系方式
     */
    @JsonProperty("aContact")
    private String aContact;
    /**
     * 编号
     */
    @JsonProperty("aStaffId")
    private String aStaffId;
    /**
     * 部门id
     */
    @JsonProperty("aDepartId")
    private Long aDepartId;
    /**
     * 部门类
     */
    private AuthDepart depart;
    /**
     *  学校类
     */
    private School school;
    /**
     * 学校id
     */
    @JsonProperty("aSchoolId")
    private Long aSchoolId;
    /**
     *  学校名字
     */
    private String schoolName;
    /**
     * 创建人
     */
    @JsonProperty("aCreateBy")
    private String aCreateBy;
    /**
     * 创建时间
     */
    @JsonProperty("aCreateDate")
    private Date aCreateDate;
    /**
     * 更新人
     */
    @JsonProperty("aUpdateBy")
    private String aUpdateBy;
    /**
     * 更新时间
     */
    @JsonProperty("aUpdateDate")
    private Date aUpdateDate;
    /**
     * 删除标记
     */
    @JsonProperty("aDeleteFlag")
    private Integer aDeleteFlag;
    /**
     * 部门负责员工0:代表不是 1：代表是主管
     */
    @JsonProperty("aIsManage")
    private Integer aIsManage;
    /**
     * 状态：1-正职，2-离职，3-试用
     */
    @JsonProperty("aState")
    private Integer aState;
    /**
     * 账户类型
     */
    private String aType;
    /**
     * 在线状态 1：在线 0：离线
     */
    @ApiModelProperty("禁用和启用0/1")
    @JsonProperty("aOnlineState")
    private Integer aOnlineState;
    /**
     * 是否修改过密码 1：已修改 0：未修改
     */
    @JsonProperty("aIsChangePwd")
    private Integer aIsChangePwd;
    /**
     * 银行账户
     */
    @JsonProperty("aBankAccount")
    private String aBankAccount;
    /**
     * 账户状态
     */
    @JsonProperty("aBankStatus")
    private String aBankStatus;

    @JsonProperty("aStateDate")
    private Date aStateDate;

    /**
     * 分页对象
     */
    private Pageable pageable;

    private int page = 1;
    private int size = 10;

}

